package hu.mapro.model.meta;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;

public interface BuiltinType<T> extends Type<T> {
	
	@SuppressWarnings("rawtypes")
	public enum BuiltinTypeCategory implements BuiltinType {
		BIGDECIMAL(BigDecimal.class),
		BIGINTEGER(BigInteger.class),
		BOOLEAN(Boolean.class),
		BYTE(Byte.class),
		CHARACTER(Character.class),
		DATE(Date.class),
		DOUBLE(Double.class),
		FLOAT(Float.class),
		INTEGER(Integer.class),
		LONG(Long.class),
		SHORT(Short.class),
		STRING(String.class),
		TEXT(String.class),
		
		;
		
		public Class<?> clazz;

		private BuiltinTypeCategory(Class<?> clazz) {
			this.clazz = clazz;
		}

		public Class<?> getTypeClass() {
			return clazz;
		}
		
		@Override
		public TypeCategory getTypeCategory() {
			return TypeCategory.BUILTIN;
		}
		
		@Override
		public BuiltinTypeCategory getBuiltinTypeCategory() {
			return this;
		}

		
	}
	
	BuiltinTypeCategory getBuiltinTypeCategory();

}
